package com.sihan.framework.etm.mapper;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.entity.Permission;
import com.sihan.framework.etm.vo.PermissionIdVO;
import com.sihan.framework.etm.vo.PermissionVO;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface PermissionMapper extends BaseMapper<Permission, String> {


  /**
   * 递归查询子类权限Id
   *
   * @param parentId 父类权限Id
   * @return 子权限Ids
   */
  List<PermissionIdVO> recursiveChildrenId(@Param("id") String parentId);

  /**
   * 通过权限Ids批量更新available字段
   *
   * @param permissionIds 权限Ids
   * @param available 是否可用
   */
  int updateAvailableByIds(@Param("permissionIds") List<String> permissionIds,
      @Param("available") Boolean available, @Param("updateTime") Date updateTime,
      @Param("updateUser") String updateUser);

  /**
   * 通过父类Id递归查询所有的子权限信息
   *
   * @param parentId 父类Id
   * @return 子权限信息
   */
  List<PermissionVO> recursiveChildren(@Param("id") String parentId);
  
  List<PermissionVO> recursiveChildrenForRole(@Param("id") String parentId,@Param("roleId") String roleId);

}